package org.datastealer.config;

import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.context.annotation.ClassPathBeanDefinitionScanner;

/**
 * Note：
 *
 * @author ：mengjw
 * @description：类路径扫描类：用于判断加载哪个路径下的实现
 * @date ：Created in 2020/8/23
 */
public class DataStealerBeanDefinitionScanner extends ClassPathBeanDefinitionScanner {

    /**
     * mysql的数据库类型
     */
    private static final String MYSQL_DB_TYPE = "mysql";
    /**
     * mysql的数据库类型
     */
    private static final String MYSQL_PACKAGE = "org.datastealer.dao.mysql";
    /**
     * oracle的数据库类型
     */
    private static final String ORACLE_DB_TYPE = "oracle";
    /**
     * mysql的数据库类型
     */
    private static final String ORACLE_PACKAGE = "org.datastealer.dao.oracle";

    /**
     * 构造方法
     *
     * @param registry BeanFactory
     * @param dbType   数据库类型
     */
    public DataStealerBeanDefinitionScanner(BeanDefinitionRegistry registry, String dbType) {
        super(registry);
        handleScanPackage(dbType);
    }

    /**
     * 根据数据库类型处理扫描的包
     *
     * @param dbType 数据库类型
     */
    public void handleScanPackage(String dbType) {
        if (MYSQL_DB_TYPE.equals(dbType)) {
            this.scan(MYSQL_PACKAGE);
        } else if (ORACLE_DB_TYPE.equals(dbType)) {
            this.scan(ORACLE_PACKAGE);
        }
    }

}